package com.ruoyi.rocketMq;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;

import javax.annotation.PostConstruct;

/**
 * @author cyh
 * @date 2022/7/8 2:58 下午
 */
public class send {

    public static void main(String[] args) throws Exception {
        // 创建一个producer，参数为Producer Group名称
        DefaultMQProducer producer = new DefaultMQProducer("pg");
        // 指定nameServer地址
        producer.setNamesrvAddr("192.168.1.179:9876");
        // 设置当发送失败时重试发送的次数，默认为2次
        producer.setRetryTimesWhenSendFailed(3);
        // 设置发送超时时限为5s，默认3s
        producer.setSendMsgTimeout(5000);

        // 开启生产者
        producer.start();

        // 生产并发送100条消息
        // Message Body可以是任何二进制形式的数据，消息队列RocketMQ版不做任何干预。
        // 需要Producer与Consumer协商好一致的序列化和反序列化方式。
        byte[] body = ("Hello RocketMQ ReTry2 ").getBytes(RemotingHelper.DEFAULT_CHARSET);
        Message msg = new Message("LearnTopicQ", "DonTag", body);
        // 为消息指定key
        // 设置代表消息的业务关键属性，请尽可能全局唯一。
        msg.setKeys("ReTry2");
        // 同步发送消息
        SendResult sendResult = producer.send(msg);
        System.out.println(sendResult);
        // 关闭producer
        producer.shutdown();
    }
}
